DEVICEHIGH
Device와 같은 기능을 담당하지만 장치 제어기를 상위 메모리(HMA)에 탑재한다. 일반적으로 장치 제어기는 Device 명령어에 의하여 상용 메모리로 탑재된다. 이 경우 장치 제어기는 상용 메모리를 사용하게 된다.
따라서, 응용 프로그램에서 사용할 수 있는 상용 메모리를 보다 많이 남겨놓기 위하여 DEVICEHIGH 명령어를 사용하여 장치 제어기를 상위 메모리로 탑재할 수 있다.
Device 명령어는 장치 제어기를 상용 메모리에 탑재하기 때문에 장치 제어기가 탑재될 영역이나 크기를 지정할 필요가 없었다. 그러나, DEVICEHIGH 명령어는 상위 메모리에 있는 비어있는 메모리 블럭에 장치 제어기를 탑재하기 때문에 사용자가 비어있는 상위 메모리 블럭을 지정할 수 있는 옵션을 지원한다.
물론, 비어있는 상위 메모리 블럭을 지정하지 않는 경우에는 상위 메모리 블럭 중에서 가장 큰 블럭으로 장치 제어기를 탑재한다.
DOS에서는 장치 제어기를 상위 메모리로 탑재하는 것과 마찬가지로 메모리 상주 프로그램의 경우 프롬프트 상에서나 배치 프로그램에서 메모리 상주 프로그램을 상위 메모리에 탑재할 수 있는 명령어를 제공하고 있다.
메모리 상주 프로그램을 상위 메모리로 탑재하기 위하여 LOADHIGH (LH) 명령어를 사용하는데, LH 명령어와 DEVICEHIGH 명령어에 사용되는 옵션과 매개 변수는 거의 비슷하게 사용된다. LH 명령어에 대한 보다 자세한 사항은 해당 명령어를 참조하기 바란다.
■ 사용법
DEVICEHIGH [[/L:region1[,minsize1][;region2[,minsize2][/S]] = [drive:][path]filename [para]
■ 옵션 및 매개변수

[drive:][path] filename | 상위 메모리 영역(UMB)에 탑재할 장치 제어기 파일의 경로와 이름을 지정한다.
para | 해당 장치 제어기에 필요한 옵션이나 명령어 라인 정보를 지정한다.
[/l:region1 [,minsize1] [;region2 [,minsize2] | 장치 제어기가 적재될 하나 혹은 그 이상의 메모리 영역과 장치 제어기를 설치할 최소 크기를 지정한다. 만약, 이 옵션을 지정하지 않는다면 DOS는 장치 제어기를 가장 큰 상위 메모리 블럭(UMB)으로 탑재하고, 다른 상위 메모리 블럭(UMB)에 장치 제어기를 탑재할 수 있도록 한다.
/s | 장치 제어기가 상위 메모리에 탑재되는 동안 UMB의 최소 크기보다 작아지게 될 때 메모리의 사용을 효율적으로 사용할 수 있도록 하기 위하여 사용하는 옵션이다. 이 옵션은 일반적으로 메모리 최적화 프로그램에서 장치 제어기가 탑재되면서 필요로 하는 적절한 메모리 크기를 결정하기 위해 사용한다.
size=hexsize | 상위 메모리로 장치 제어기를 탑재할 때 필요한 메모리의 최소량을 지정하기 위하여 사용하는 형식으로 메모리의 최소량을 16진수의 바이트 단위로 지정한다. 메모리 최소량을 지정하려면 SIZE=nnnn 형식을 반드시 따라야만 한다. 즉, 64Bytes가 필요한 경우에는 "SIZE=0040"이라고 지정해야 한다.

■ 참고 사항
☞ 장치 제어기를 탑재할 상위 메모리 영역 지정하기
/L 옵션을 사용하여 특정 상위 메모리 영역을 사용자가 임의로 지정하여 장치 제어기를 탑재할 수 있도록 하거나, 장치 제어기가 특정 상위 메모리 영역을 사용할 수 있도록 지정할 수 있다.
지정된 상위 메모리 영역의 가장 큰 블록에 장치 제어기를 탑재하려면 /L 옵션 뒤에 상위 메모리 블럭의 영역 번호를 지정해야 한다.
예를 들어, 영역 1에 있는 가장 큰 빈 블럭에 장치 제어기를 탑재하려면 /L:1 이라고 지정한다. 만약, 비어 있는 상위 메모리 영역을 모르는 경우에는 MEM 명령어에 /f 옵션을 사용하기 바란다.
MEM 명령어를 /f 옵션과 함께 지정하는 경우 상용 메모리와 상위 메모리 영역의 비어 있는 영역에 관한 정보를 볼 수 있다.
상위 메모리로 장치 제어기를 탑재할 때 /L 옵션을 사용하면 장치 제어기는 지정된 메모리 영역만 사용할 수 있다. 일부 장치 제어기는 하나 이상의 메모리 영역을 사용하는 경우도 있는데, 이러한 장치 제어기는 하나 이상의 영역을 지정해야 한다.
둘 이상의 영역을 지정할 때 분리 문자로 세미콜론(;)을 사용한다. 예를 들어, 블럭 1과 2를 장치 제어기가 사용하도록 지정하려면 /L:1;2 라고 영역 번호를 지정한다.
일반적으로 DOS는 장치 제어기를 메모리에 탑재할 때 장치 제어기가 탑재될 크기의 상위 메모리 블럭(UMB)의 영역만을 할당해준다.
만약 장치 제어기가 실행되면서 적재된 영역보다 많은 영역을 필요로 하는 경우에는 minsize 매개 변수를 사용해 UMB로 적재할 때 너무 작은 공간이 할당되지 않도록 할 수 있다.
minsize 매개 변수를 사용하면 DOS는 장치 제어기의 적재 크기나 지정한 최소 크기 값보다 큰 UMB 영역으로 장치 제어기를 탑재한다.
☞ DOS=UMB 명령의 사용
DEVICEHIGH 명령을 사용하려면 반드시 DOS=UMB 명령을 Config.sys 파일에 사용해야 한다. 이 명령을 지정하지 않으면 모든 장치 제어기는 상용 메모리(기본 메모리)에 적재된다.
☞ DEVICEHIGH의 선행 조건
사용자가 DEVICEHIGH 명령어를 사용하여 장치 제어기를 상위 메모리로 탑재하기 위해서는 선행되어야할 조건이 있다.
먼저, 컴퓨터의 조건으로 386 이상의 프로세서를 장착하고 있고 연속 확장 메모리를 가지고 있어야 한다. 즉, 시스템 메모리가 최소 1MB가 넘어야 한다.
둘째, HIMEM.SYS를 Device 명령어를 사용하여 DEVICEHIGH 명령어가 나오기 전에 먼저 설치해야 한다.
셋째, 상위 메모리 블럭을 설치해야 한다. 386 이상의 기종을 사용하는 경우에는 EMM386.EXE를 이용하여 상위 메모리 블럭을 설치할 수 있다.
넷째, Config.sys 파일 안에 DOS 운영 체제가 상위 메모리 블럭을 사용할 수 있도록 DOS=UMB 명령어가 있어야 한다.
따라서, 다음과 같은 명령어가 Config.sys에 지정되어야 DEVICEHIGH 명령어를 사용하여 장치 제어기를 상위 메모리에 탑재할 수 있다.
device=c:\dos\himem.sys
device=c:\dos\emm386.exe noems highscan
dos=umb
☞ 상위 메모리가 없을 경우
상위 메모리가 없는데 DEVICEHIGH 명령어를 사용하면 DOS는 장치 제어기를 상용 메모리로 탑재한다. 즉, Device 명령어와 같은 것으로 취급한다.
■ 사용 예
다음은 C드라이브의 루트 디렉토리에 있는 마우스 제어기인 MOUSE..SYS를 상위 메모리 영역으로 탑재하는 예이다.
devicehigh=mydriv.sys
위의 예에서 마우스 제어기를 상위 메모리 블럭 1에 탑재하도록 지정하려면 다음과 같이 DEVICEHIGH 명령어를 사용한다.
devicehigh /L:1 =mouse.sys
다음은 MYDRIVER.SYS 장치 제어기를 상위 메모리의 1구역으로 탑재하고, 3구역을 사용할 수 있도록 지정하는 예이다.
devicehigh /L:1;3 =C:\util\mydriver.sys
위의 예에서 1구역과 3구역에 각각 512 바이트의 크기를 사용할 수 있도록 지정하려면 다음과 같이 DEVICEHIGH 명령어를 사용한다.
devicehigh /L:1,512;3,512 =C:\util\mydriver.sys